// Object.create()方法，会创建一个新对象，第一个参数接收一个对象，将会作为新创建对象的原型对象，第二个可选参数是属性描述符（不常用，默认是undefined）。具体请查看Object.create()。
// 模拟Object.create()
// let obj = Object.create(Object.prototype) 等价于let obj = {}
function createObj(proto) {
    function F() {}
    F.prototype = proto
    return new F()
}

// 实现new方法
function newFn(func, ...args) {
     if (typeof func !== 'function') {
        console.error('第一个参数必须为函数，您传入的参数为', func)
        return
    }
    const obj = Object.create(func.prototype)
    const result = func.call(obj, ...args)
    if (result && (typeof result === 'object' || typeof result === 'function')) {
        return result
    }
    return obj
}